@echo off
setlocal enabledelayedexpansion

REM 检查是否以管理员权限运行
NET SESSION >nul 2>&1
if %errorLevel% neq 0 (
    echo 请以管理员身份运行此脚本！
    echo 右键点击此脚本文件，选择"以管理员身份运行"
    pause
    exit /b 1
)

REM 加强版解除PowerShell执行策略限制，多管齐下确保生效
echo 正在解除PowerShell执行策略限制...

REM 1. 使用不同方法设置执行策略（防止单种方法失效）
powershell -Command "Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser -Force"
powershell -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force"
echo - 当前用户执行策略已设置

REM 2. 设置进程级执行策略（最即时生效）
powershell -Command "Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -Force"
echo - 进程级执行策略已设置为Unrestricted

REM 3. 设置本地计算机级执行策略
powershell -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine -Force"
echo - 本地计算机执行策略已设置

REM 4. 额外的执行策略解除命令作为备用
powershell -Command "Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force"
echo - 已应用临时Bypass策略

REM 验证执行策略设置
powershell -Command "Get-ExecutionPolicy -List"
echo PowerShell执行策略限制已解除。

REM 查找Bun可执行文件的实际路径（避免通过PowerShell调用）
echo 正在查找Bun可执行文件...
for /f "delims=" %%i in ('powershell -Command "(Get-Command bun).Path"') do set "BUN_EXE=%%i"
echo 找到Bun可执行文件: %BUN_EXE%

REM 检查Bun是否已安装
echo 正在检查Bun是否已安装...
if exist "%BUN_EXE%" (
    echo Bun已安装，版本：
    "%BUN_EXE%" --version
) else (
    echo Bun未安装，正在安装...
    powershell -c "irm bun.sh/install.ps1 | iex"
    if %errorLevel% neq 0 (
        echo Bun安装失败！请尝试手动安装：访问https://bun.sh
        pause
        exit /b 1
    )
    echo Bun安装成功！
    REM 重新查找安装后的Bun路径
    for /f "delims=" %%i in ('powershell -Command "(Get-Command bun).Path"') do set "BUN_EXE=%%i"
)

REM 安装项目依赖
echo 正在安装项目依赖...
if exist "%BUN_EXE%" (
    "%BUN_EXE%" install
) else (
    bun install
)
if %errorLevel% neq 0 (
    echo 项目依赖安装失败！
    pause
    exit /b 1
)
echo 项目依赖安装成功！

REM 启动开发服务器
echo 正在启动开发服务器...
echo 服务器将在浏览器中打开：http://localhost:3000
start http://localhost:3000

REM 使用直接路径启动，避免PowerShell执行策略问题
if exist "%BUN_EXE%" (
    echo 使用直接路径启动Bun: %BUN_EXE%
    "%BUN_EXE%" run dev
) else (
    echo 使用命令行启动Bun
    bun run dev
)

pause
endlocal